package ManageSystem;
import java.util.ArrayList;
import java.util.List;

// 薪资管理系统：负责存储员工、管理薪资流程、测试功能
public class SalaryManagementSystem {
    // 存储所有员工的集合（体现“存储”需求）
    private List<Employee> employeeList = new ArrayList<>();

    // 方法1：添加员工到系统（支持多态：参数是父类Employee，可接收任意子类对象）
    public void addEmployee(Employee employee) {
        employeeList.add(employee);
    }

    // 方法2：批量生成所有员工的工资条
    public void generateAllPaySlips() {
        System.out.println("===== 全体员工工资条 =====");
        // 遍历员工集合，调用每个员工的generatePaySlip()（多态：自动调用子类的实现）
        for (Employee emp : employeeList) {
            System.out.println(emp.generatePaySlip());
            System.out.println(); // 空行分隔不同员工的工资条
        }
    }

    // 主方法：程序入口，测试系统功能
    public static void main(String[] args) {
        // 1. 创建薪资管理系统对象
        SalaryManagementSystem system = new SalaryManagementSystem();
        // 2. 创建员工对象（普通员工、管理人员）
        RegularEmployee emp1 = new RegularEmployee("张三", "EMP001", 50, 160); // 正常时长
        RegularEmployee emp2 = new RegularEmployee("李四", "EMP002", 45, 800); // 异常时长
        Manager mgr1 = new Manager("王五", "MGR001", 15000, 5000); // 管理人员
        // 3. 将员工添加到系统
        system.addEmployee(emp1);
        system.addEmployee(emp2);
        system.addEmployee(mgr1);
        // 4. 批量生成工资条
        system.generateAllPaySlips();
    }
}
